home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / dsp / dspgroup / macrosrc.arc / PROC.ASM < prev    next >
Encoding:
Assembly Source File  |  1983-11-17  |  1.6 KB  |  64 lines

  1.  
  2. *PROCEDURE DEFINITION MACRO
  3. *      GENERATES FORMAL ARGUMENT LOCATIONS, SAVES AR1&0, AND POPS
  4. *      RETURN STACK
  5. *
  6. *      PROC NAME,FORMAL-LIST
  7. *      FORMAL-LIST:=NIL|FORMAL|FORMAL,FORMAL-LIST
  8. *      FORMAL:=VAR|(VAR,SIZE)
  9. *
  10. *      VAR IS VARIABLE NAME USED IN FUNCTION
  11. *      SIZE IS THE NUMBER OF WORDS REQUIRED
  12. *      NAME IF THE PROCEDURE NAME (<4 CHARS)
  13.  
  14.        COPY CHECK.SCR
  15.        COPY CREF.SCR
  16.        COPY PROC2.SCR
  17.  
  18. PROC   $MACRO            A,B1,B2,B3,B4,B5,B6,B7,B8
  19.        $CHECK :A:
  20.        PSEG              PROG SEG
  21.        DEF  :A:          DEF ENTRY
  22. :A:    EQU  $            ENTRY
  23.        POP               POP RETURN
  24.        SACL :A:$R,0      SAVE IN :A:$R
  25.        SAR  AR0,:A:$0    SAVE AR0
  26.        SAR  AR1,:A:$1    SAVE AR1
  27.        DSEG              DATA SEG
  28. :A:$R  BSS  1            RETURN SAVE
  29. :A:$0  BSS  1            AR0 SAVE
  30. :A:$1  BSS  1            AR1 SAVE
  31.        $VAR L
  32.        $ASG '$$CNTR' TO L.S
  33.        $ASG 0 TO L.SV    INIT FORMAL COUNT
  34.        $ASG :A: TO L.SS
  35.        $IF    B1.L#=0
  36.        $PROC3 :B1:
  37.        $ENDIF
  38.        $IF    B2.L#=0
  39.        $PROC3 :B2:
  40.        $ENDIF
  41.        $IF    B3.L#=0
  42.        $PROC3 :B3:
  43.        $ENDIF
  44.        $IF    B4.L#=0
  45.        $PROC3 :B4:
  46.        $ENDIF
  47.        $IF    B5.L#=0
  48.        $PROC3 :B5:
  49.        $ENDIF
  50.        $IF    B5.L#=0
  51.        $PROC3 :B6:
  52.        $ENDIF
  53.        $IF    B7.L#=0
  54.        $PROC3 :B7:
  55.        $ENDIF
  56.        $IF    B8.L#=0
  57.        $PROC2 :B8:
  58.        $ENDIF
  59.        DEND              END OF DATA
  60.        $VAR P
  61.        $ASG '$$PROC' TO P.S
  62.        $ASG 1 TO P.SV    FLAG PROC TYPE
  63.        $ASG :A: TO P.SS
  64.        $END